/**    
 * 文件名：PatientRegistriesLocal.java    
 *    
 * 版本信息：    
 * 日期：2010-11-10    
 * Copyright 足下 Corporation 2010     
 * 版权所有    
 *    
 */

package com.sunwayhorizo.health.business.patad.empi;

import java.util.*;

import javax.ejb.*;
import com.sunwayhorizo.health.business.dto.*;
import com.sunwayhorizo.health.business.dto.patad.empi.*;
import com.sunwayhorizo.health.business.dto.patad.encounter.*;
import com.sunwayhorizo.health.business.dto.registries.*;
import com.sunwayhorizo.health.hl7.common.*;
import com.sunwayhorizo.health.hl7.rim.*;

/**
 * 患者登记本地接口
 * 
 * @Title: PatientRegistriesLocal.java
 * @Package com.sunwayhorizo.health.business.registries
 * @version V1.0
 * @firstAuthor jinzw
 * @firstTime 2010-10-28 下午03:23:28
 * @lastAuthor jinzw
 * @lastTime 2010-11-10 下午01:43:54
 * @updComment
 */
@Local
public interface PatientManagerLocal
{

    /**
     * 患者主索引登记保存
     * 
     * @Title: newPatientIndex
     * @param @param patientDto 患者登记DTO与前台VO对应
     * @param @throws Hl7Exception
     * @return ResultsDTO 保存成功返回患者ResultsDTO
     * @throws Hl7Exception
     * @firstAuthor jinzw
     * @firstTime 2010-10-28 下午03:23:15
     * @lastAuthor jinzw
     * @lastTime 2010-11-10 下午01:50:04
     */
    ResultsDTO newPatientIndex(EntitysDTO patientDto) throws Hl7Exception;


    // public ResultsDTO newPatientIndex(List<EntitysDTO> list) throws
    // Hl7Exception;

    /**
     * 患者登记保存
     * 
     * @Title: newPatient
     * @param @param patientDto 患者登记DTO与前台VO对应
     * @param @throws Hl7Exception
     * @return ResultsDTO 保存成功返回患者ID
     * @throws Hl7Exception
     * @firstAuthor jinzw
     * @firstTime 2010-10-28 下午03:23:15
     * @lastAuthor jinzw
     * @lastTime 2010-11-10 下午01:50:04
     */
    // public String newPatient(EntitysDTO patientDto) throws Hl7Exception;

    /**
     * 删除患者信息
     * 
     * @Title: delPatient
     * @param @param patientIDs 患者ID数组信息
     * @return ResultsDTO 返回类型
     * @throws Hl7Exception
     * @firstAuthor jinzw
     * @firstTime 2010-11-24 下午03:14:48
     * @lastAuthor jinzw
     * @lastTime 2010-11-24 下午03:14:48
     */

    /**
     * 修改一个患者信息
     * 
     * @Title: modifyPatient
     * @param @param patientDTO
     * @return ResultsDTO 返回类型
     * @throws Hl7Exception
     * @firstAuthor jinzw
     * @firstTime 2010-11-24 下午03:14:48
     * @lastAuthor jinzw
     * @lastTime 2010-11-24 下午03:14:48
     */
    ResultsDTO modifyPatient(EntitysDTO patientDTO) throws Hl7Exception;


    /**
     * 患者查询方法。根据不同的查询条件查询返回出不同的患者信息
     * 
     * @Title: findPatient
     * @param @param patientQueryDTO 查询DTO
     * @return ResultsDTO 返回类型
     * @firstAuthor Obama
     * @firstTime 2011-06-27 19:51:17
     * @lastAuthor Obama
     * @lastTime 2011-06-27 19:51:17
     */
   // ResultsDTO findPatient(PatientQueryDTO patientQueryDTO) throws Hl7Exception;


    /**
     * 患者查询方法。根据名称检索患者信息
     * 
     * @Title: findPatientByName
     * @param @param name 姓名
     * @return ResultsDTO 返回类型
     */
    ResultsDTO findPatientByName(String name) throws Hl7Exception;


    /**
     * 根据条件查询患者角色信息
     * 
     * @Title: findRoleByCond
     * @param @param patientQueryDTO 查询条件DTO
     * @return List<Role>
     */
    List<Patient> findRoleByCond(PatientEncounterDTO dto, PageDTO pageDTO) throws Hl7Exception;


    /**
     * 根据条件患者角色查询
     * 
     * @Title: findRoleIiByID
     * @param patientQueryDTO
     *            查询条件DTO
     * @return Patient
     * @throws Hl7Exception
     */
    ResultsDTO delPatient(List<String> patientList) throws Hl7Exception;


    /**
     * 很据患者角色查询医保信息
     * 
     * @Title: getInfoInsuranceDTOFromPatient
     * @param patient
     *            患者对象
     * @return List<InfoInsuranceDTO>
     * @throws Hl7Exception
     * @firstAuthor Obama
     * @firstTime 2011-03-17 20:08
     * @lastAuthor Obama
     * @lastTime 2011-03-17 20:08
     */
    List<InfoInsuranceDTO> getInfoInsuranceDTOFromPatient(Patient patient) throws Hl7Exception;


    /**
     * 根据登陆员工显示其患者信息
     * 
     * @Title: findPatientsInTheOrg
     * @param org
     *            患者对象
     * @return List<EntitysDTO> 患者信息
     * @throws Hl7Exception
     * @firstAuthor Obama
     * @firstTime 2011-04-01 21:08
     * @lastAuthor Obama
     * @lastTime 2011-04-01 21:08
     */

    boolean isOutHospital(String patientNatureId) throws Hl7Exception;


    void updatePatientBaseInfo(EntitysDTO dto) throws Hl7Exception;


    PatientEncounterDTO findPatientByBedNoAndWorkgroupId(String bedNo, String sss) throws Hl7Exception;


    ResultsDTO findPatientResultsByBedNoAndWorkgroupId(String bedNo, String workgroupId) throws Hl7Exception;


    Patient findOrCreatePateint(PatientEncounterDTO dto) throws Hl7Exception;


    ResultsDTO findPatient(PatientEncounterDTO patientEncounterDTO, PageDTO pageDTO) throws Hl7Exception;


    Patient newPatientNotPersist(EntitysDTO dto) throws Hl7Exception;


    ResultsDTO delPatient(String roleId) throws NumberFormatException, Hl7Exception;


    ResultsDTO findAdmitDetail(String natureId) throws Hl7Exception;


}
